# 你想获取文件系统中某个目录下的所有文件列表。

import os

user_path = os.path.expanduser('~')

childs = os.listdir(user_path)
files = [child for child in childs if os.path.isfile(os.path.join(user_path, child))]
dirs = [child for child in childs if os.path.isdir(os.path.join(user_path, child))]

print('childs:')
print(childs)
print('\nfiles:')
print(files)
print('\ndirs:')
print(dirs)

pyfiles = [child for child in childs if child.endswith('.py')]
print('\npyfiles:')
print(pyfiles)

# 文件匹配其他方式
import glob
pyfiles = glob.glob(os.path.join(user_path, '*.py'))
print('\npyfiles(glob):')
print(pyfiles)

from fnmatch import fnmatch
pyfiles = [name for name in childs if fnmatch(name, '*.py')]
print('\npyfiles(fnmatch):')
print(pyfiles)

# 获取目录中的列表是很容易的，但是其返回结果只是目录中实体名列表而已。
# 如果你还想获取其他的元信息，比如文件大小，修改时间等等，
# 你或许还需要使用到os.path 模块中的函数或着os.stat() 函数来收集数据。
pyfiles = glob.glob('*.py')

name_sz_date = [(name, os.path.getsize(name), os.path.getmtime(name)) for name in pyfiles]

for name, size, mtime in name_sz_date:
    print(name, size, mtime)
print()

file_metadata = [(name, os.stat(name)) for name in pyfiles]
for name, metadata in file_metadata:
    print(name, metadata.st_size, metadata.st_mtime)
